//
//  TLUpdatePropertiesViewController.swift
//  TLiOS26LiquidGlassDemo
//
//  Created by jiayin on 2025/7/11.
//
import UIKit

/**
 新技术功能介绍：
 1.UIViewController 与 UIView 均增加了一个名为updateProperties()的新方法，可以通过修改属性值达到更新 UI 的效果。
 2.它是一种轻量级的 UI 更新方式，不会触发完整的布局过程（不会触发layoutSubviews()或者viewWillLayoutSubviews()方法）。常见使用场景如下：
    2.1 更改 UI 的内容。
    2.2 显示/隐藏 UI。
    2.3 无需移动或者调整 UI 的大小。
 3.可以自动追踪 @Observable Object。
 4.可以通过调用setNeedsUpdateProperties()方法手动触发更新。
 */
class TLUpdatePropertiesViewController: UIViewController {
    lazy var label: UILabel = {
        let label = UILabel()
        label.frame = CGRect(x: 0, y: 0, width: 300, height: 60)
        label.textAlignment = .center
        label.font = UIFont.boldSystemFont(ofSize: 48)
        label.center = view.center
        return label
    }()
//    let updatePropertiesAutoModel = TLUpdatePropertiesAutoModel()
    let updatePropertiesManualModel = TLUpdatePropertiesManualModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        view.addSubview(label)
    }

    override func updateProperties() {
        super.updateProperties()

//        label.textColor = updatePropertiesModel.currentColor
//        label.text = updatePropertiesModel.currentValue
        
        label.textColor = updatePropertiesManualModel.currentColor
        label.text = updatePropertiesManualModel.currentValue
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
//        updatePropertiesAutoModel.currentColor = .systemBlue
//        updatePropertiesAutoModel.currentValue = "iOS26"
        
        updatePropertiesManualModel.currentColor = .systemGray
        updatePropertiesManualModel.currentValue = "iOS26"
        // 手动更新
        setNeedsUpdateProperties()
    }

}
